package com.corpgovernment.organization.vo;

import com.corpgovernment.common.base.Page;
import com.corpgovernment.organization.entity.db.MbCommonInvoiceInfo;
import com.ctrip.corp.obt.generic.security.annotation.SecurityEntity;
import com.ctrip.corp.obt.generic.security.annotation.SecurityField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author xukang zhang
 * @date 2023/11/20 13:14
 */
@Data
public class MbCommonInvoiceInfoPageVo {

    private Integer pageNum = 1;
    private Integer pageSize = 20;
    private Integer totalPage;
    private Long count;
    @SecurityEntity
    private List<MbCommonInvoiceInfoVo> list;


    @Data
    public static class MbCommonInvoiceInfoVo implements Serializable {

        private Long id;

        /**
         * 创建发票的个人id(个人在个人信息里边可以创建发票) 如果是组织创建的发票该值一定是空，如果是个人一定不为空
         **/
        private String uid;

        /**
         * 创建发票的公司/部门id 或者创建发票的个人所属的组织id(在组织信息里边创建的发票) 该值永远不会为空
         */
        private String orgId;

        /**
         * 发票抬头
         **/
        private String invoiceTitle;

        /**
         * 税号
         **/
        @SecurityField
        private String taxId;

        /**
         * 发票类型.1.公司 2.非公司性质 3.个人(公司/部门创建的发票默认为1)
         **/
        private Integer invoiceType;

        /**
         * 0公司/部门添加的发票,不区分是否是增值税专用发票，1是增值税专用发票(个人添加的发票) 2不是增值税专用发票(个人添加的发票)
         **/
        private Integer invoiceTaxType;
        /**
         * 公司地址
         **/
        @SecurityField
        private String corporationAddress;

        /**
         * 公司电话
         **/
        @SecurityField
        private String corporationPhone;

        /**
         * 公司使用银行名称
         **/
        private String accountBank;

        /**
         * 公司使用银行账号
         **/
        @SecurityField
        private String accountCardNo;

        /**
         * 是否删除状态 1删除|0未删
         **/
        @JsonIgnore
        private Boolean isDeleted;

        /**
         * 创建时间
         **/
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date datachangeCreatetime;

        /**
         * 修改时间
         **/
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date datachangeLasttime;

        /**
         * 1表示公司添加的发票  2表示个人添加的发票
         */
        @Transient
        private Integer type;
    }

}